/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.util.AbstractList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import jpa.PenggunaJpaController;
import jpa.exceptions.NonexistentEntityException;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;

/**
 *
 * @author radityo
 */
public class Pengguna extends GenericForwardComposer {

    private PenggunaJpaController jpa = new PenggunaJpaController();
    private entity.Pengguna penggunaSekarang = new entity.Pengguna();
    protected Textbox nama;
    protected Textbox username;
    protected Textbox password;
    protected Combobox type;
    private String searchUsername;
    private int rows = Math.min(10, jpa.getPenggunaCount());

    public String getSearchUsername() {
        return searchUsername;
    }

    public int getRows(){
        return rows;
    }

    public void setSearchUsername(String searchUsername) {
        this.searchUsername = searchUsername;
    }

    public AbstractList getDaftarPengguna() {
        return new list.PenggunaList(rows);
    }

    public List<entity.PenggunaType> getPenggunaType() {
        return Arrays.asList(entity.PenggunaType.values());
    }

    public entity.Pengguna getCurrent() {
        return penggunaSekarang;
    }

    public void setCurrent(entity.Pengguna a) {
        penggunaSekarang = a;
    }

    public void onClick$search(){

    }

    public void onClick$reset(){

    }

    public void onClick$add() {

        reset();
    }

    public void onClick$save() {


        if (penggunaSekarang.getId() != null) {
            try {
                jpa.edit(penggunaSekarang);
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(Pengguna.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Exception ex) {
                Logger.getLogger(Pengguna.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            jpa.create(penggunaSekarang);
        }



        try {
            Messagebox.show("Pengguna Telah Tersimpan");
        } catch (InterruptedException ex) {
            Logger.getLogger(Pengguna.class.getName()).log(Level.SEVERE, null, ex);
        }
        /*
        penggunaSekarang = new entity.Pengguna();
        reset();
         */

    }

    public void onClick$delete() {

        int result = Messagebox.NO;
        try {
            result = Messagebox.show("Apakah Anda Yakin Menghapus pengguna " + penggunaSekarang.getNama(), "Penghapusan Pengguna", Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
        } catch (InterruptedException ex) {
            Logger.getLogger(Pengguna.class.getName()).log(Level.SEVERE, null, ex);
        }
        if (result == Messagebox.YES) {
            try {
                jpa.destroy(penggunaSekarang.getId());
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(Pengguna.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                Messagebox.show("Pengguna Telah Dihapus");
            } catch (InterruptedException ex) {
                Logger.getLogger(Pengguna.class.getName()).log(Level.SEVERE, null, ex);
            }
            reset();
        }

    }

    private void reset() {
        penggunaSekarang = new entity.Pengguna();
        nama.setText("");
        username.setText("");
        password.setText("");
        type.setValue(penggunaSekarang.getType().getNama());
    }
}
